public class SubSort {
  public int[] subSort(int[] array) {
    if (array == null || array.length == 0) {
      return new int[] { -1, -1 };
    }
    int n = array.length;
    int left = 0, right = array.length - 1;
    while (left < right && array[left] <= array[left + 1]) {
      ++left;
    }
    while(left < right && array[right] >= array[right - 1]){
      right--;
    }
    if (left >= right) {
        return new int[]{-1, -1};
    }
    int max = Integer.MIN_VALUE, min = Integer.MAX_VALUE;
    for (int i = left; i <= right; ++i) {
        max = Math.max(max, array[i]);
        min = Math.min(min, array[i]);
    }
    while (left > 0 && array[left - 1] > min) {
        --left;
    }
    while (right < n - 1 && array[right + 1] < max) {
        ++right;
    }
    return new int[] { left, right };
  }

  public static void main(String[] args) {
    SubSort s = new SubSort();
    int[] array = {1,2,4,7,10,11,7,12,6,7,16,18,19};
    int[] res = s.subSort(array);
    System.out.println(res[0] + " " + res[1]);
  }
}
// 给定一个整数数组，编写一个函数，找出索引m和n，只要将索引区间[m,n]的元素排好序，整个数组就是有序的。注意：n-m尽量最小，也就是说，找出符合条件的最短序列。函数返回值为[m,n]，若不存在这样的m和n（例如整个数组是有序的），请返回[-1,-1]。

// 示例：

// 输入： [1,2,4,7,10,11,7,12,6,7,16,18,19]
// 输出： [3,9]
// 提示：

// 0 <= len(array) <= 1000000